import axios, { AxiosError } from "axios";
import { message } from "ant-design-vue";

axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
// 定义一个 Axios 实例
const apiClient = axios.create({
  baseURL: import.meta.env.VITE_BASE_API, // 替换为你的API基础URL
  timeout: 30000 // 请求超时时间
});
export const token = useLocalStorage("token", "");
// 请求拦截器
apiClient.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    if (token.value) {
      config.headers.Authorization = `Bearer ${token.value}`; // 添加授权头
    }
    return config;
  },
  (error: AxiosError) => {
    console.log(error, "错误");
    // 处理请求错误
    message.error(`访问${error}出错,${error}`);

    return Promise.reject(error);
  }
);

// 响应拦截器
apiClient.interceptors.response.use(
  res => {
    const data = res.data;
    const code = data.code
    // 对响应数据做点什么
    if( code === 500){
      message.error(data.msg)
    }
    return data;
  },
  (error: AxiosError) => {
    // 对响应错误做点什么
    if (error.response) {
      const { config } = error;
      const url = config?.url;
      message.error(`访问${url}出错,${error}`);

      // 检查响应状态码
      if (error.response.status === 401) {
        token.value = ""
        // 未授权，重定向到登录页
        window.location.href = "/login";
      }
      // 可以在这里添加更多错误处理逻辑
    }
    return Promise.reject(error);
  }
);

export const get = (url: string, params: any) => apiClient.get(url, params);
export const post = (url: string, data: any, config:any = {}) => apiClient.post(url, data, { ...config });
export const remove = (url: string, id: number) => apiClient.delete(url);